<?php
namespace Bundle\ModuleBundle\Plugin;

/**
 * Абстрактный класс поля данных плагина
 */
abstract class Field
{
	/**
	 * Значение по умолчанию для поля
	 * @var mixed
	 */
	protected $_defaultValue;
	
	/**
	 * Указывает, устанавливалось ли значение для поля или нет
	 * @var $_isInitializated boolean
	 */
	protected $_isInitializated = false;
	
	/**
	 * Тип поля
	 * @var $_type string
	 */
	protected $_type;
	
	/**
	 * Хранимое значение
	 * @var $_value mixed
	 */
	protected $_value;
	
	/**
	 * Установленно ли значение для данного поля
	 */
	public function hasValue()
	{
		return $this->_isInitializated == true;
	}
	
	/**
	 * Получение значения по умолчанию для данного поля
	 */
	public function getDefaultValue()
	{
	    return $this->_defaultValue;
	}

	public function setValue($value)
	{
		$this->_value = $value;
		$this->_isInitializated = true;
	}
	
	public function getValue()
	{
	    return $this->_value;
	}
	
	public function __construct($type, $default)
	{
	   $this->_type = $type;
	   $this->_defaultValue = $default;
	}
	
	/**
	 * Получение типа поля
	 * @return string
	 */
	public function getType()
	{
	   return $this->_type;
	}
	
}
